Django তে ফর্ম (Forms) ব্যবহার করা হয় ইউজার থেকে ডেটা গ্রহণ করার জন্য, যেমনঃ কন্টাক্ট ফর্ম, রেজিস্ট্রেশন ফর্ম, লগইন ফর্ম ইত্যাদি। Django এর ফর্ম সিস্টেম আপনাকে ইউজার ইনপুট ভ্যালিডেশন, ডেটা প্রক্রিয়াকরণ এবং সুরক্ষিতভাবে ডেটা সংরক্ষণ করতে সাহায্য করে।
ফর্ম সাবমিশন এবং ডেটা প্রক্রিয়াকরণের ধাপ
১. Django ফর্ম তৈরি করা
Django তে ফর্ম তৈরি করার জন্য forms.py ফাইল ব্যবহার করা হয়। এই ফাইলে আপনি ফর্ম ফিল্ডস এবং তাদের ভ্যালিডেশন কনফিগার করতে পারেন।
এখানে একটি সাধারণ ফর্ম উদাহরণ:
# forms.py
from django import forms
class ContactForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
এই ফর্মে তিনটি ফিল্ড রয়েছে: name, email, এবং message। Django নিজেই ফিল্ডগুলির জন্য ইনবিল্ট ভ্যালিডেশন সিস্টেম প্রদান করে (যেমন, ইমেইল ফিল্ডে ইমেইল ফরম্যাট চেক করা ইত্যাদি)।
২. ফর্মের জন্য ভিউ তৈরি করা
ফর্মের ডেটা প্রক্রিয়াকরণ করতে আপনাকে একটি ভিউ (view) তৈরি করতে হবে, যা ফর্ম সাবমিশন গ্রহণ করবে এবং প্রয়োজনীয় প্রক্রিয়াগুলি সম্পন্ন করবে।
এখানে একটি সাধারণ ভিউ উদাহরণ:
# views.py
from django.shortcuts import render
from .forms import ContactForm
def contact_view(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
# ফর্মের ডেটা প্রক্রিয়াকরণ (যেমন, ইমেইল পাঠানো বা ডেটাবেসে সংরক্ষণ)
name = form.cleaned_data['name']
email = form.cleaned_data['email']
message = form.cleaned_data['message']
# এখানে ডেটা প্রক্রিয়াকরণের কোড লেখা হবে
return render(request, 'success.html', {'name': name})
else:
form = ContactForm()
return render(request, 'contact.html', {'form': form})
এই ভিউতে:
- যদি
POSTরিকোয়েস্ট আসে, অর্থাৎ ফর্ম সাবমিট করা হয়েছে, তখনContactFormতৈরি হবে এবংrequest.POSTএর মাধ্যমে ডেটা পাঠানো হবে। - ফর্মটি যদি সঠিকভাবে পূর্ণ (valid) হয়, তবে
form.cleaned_dataথেকে ফর্ম ডেটা গ্রহণ করা হবে এবং প্রয়োজনীয় প্রক্রিয়াগুলি সম্পন্ন করা হবে (যেমন ডেটা সংরক্ষণ বা ইমেইল পাঠানো)। - অন্যথায়, ফর্মটি নতুনভাবে রেন্ডার করা হবে।
৩. টেমপ্লেট তৈরি করা
ফর্মটি ইউজারের কাছে প্রদর্শন করার জন্য আপনাকে একটি টেমপ্লেট তৈরি করতে হবে, যেখানে ফর্মটি রেন্ডার করা হবে।
এখানে একটি সাধারণ contact.html টেমপ্লেট:
<!-- contact.html -->
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Send</button>
</form>
এই টেমপ্লেটে:
{% csrf_token %}CSRF (Cross-Site Request Forgery) টোকেন, যা Django দ্বারা নিরাপত্তার জন্য প্রদান করা হয়।{{ form.as_p }}ফর্মের সব ফিল্ডকে<p>ট্যাগের মধ্যে রেন্ডার করবে।<button type="submit">এর মাধ্যমে ফর্ম সাবমিট করা হবে।
এছাড়া, যদি ফর্মটি সফলভাবে সাবমিট হয়, তবে ইউজারকে success.html টেমপ্লেট দেখানো হবে।
৪. ফর্মের ডেটা ভ্যালিডেশন
Django ফর্ম সিস্টেম ইনবিল্ট ভ্যালিডেশন প্রদান করে। উদাহরণস্বরূপ, email ফিল্ডে শুধুমাত্র বৈধ ইমেইল অ্যাড্রেস গ্রহণ করবে। আপনি কাস্টম ভ্যালিডেশনও যুক্ত করতে পারেন:
# forms.py
class ContactForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
def clean_message(self):
message = self.cleaned_data.get('message')
if 'spam' in message:
raise forms.ValidationError("Spam message detected!")
return message
এখানে clean_message মেথডটি কাস্টম ভ্যালিডেশন যুক্ত করেছে, যা ফর্মে 'spam' শব্দ থাকলে একটি ত্রুটি তৈরি করবে।
৫. ফর্মের ডেটা প্রক্রিয়াকরণ
ফর্ম সাবমিশনের পর ডেটা প্রক্রিয়াকরণ বিভিন্ন কাজের জন্য ব্যবহার করা যেতে পারে, যেমন:
- ডেটাবেসে সংরক্ষণ: ফর্ম ডেটা মডেলে সংরক্ষণ করা যায়।
- ইমেইল পাঠানো: ফর্মের ডেটা ব্যবহার করে একটি কাস্টম ইমেইল পাঠানো যেতে পারে।
- থার্ড-পার্টি সার্ভিসে পাঠানো: ফর্মের ডেটা থার্ড-পার্টি API বা সার্ভিসে পাঠানো যেতে পারে।
এখানে একটি উদাহরণ, যেখানে ফর্মের ডেটা ডেটাবেসে সংরক্ষিত হয়:
# views.py
from .models import ContactMessage
def contact_view(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
# ফর্মের ডেটা ডেটাবেসে সংরক্ষণ
ContactMessage.objects.create(
name=form.cleaned_data['name'],
email=form.cleaned_data['email'],
message=form.cleaned_data['message']
)
return render(request, 'success.html', {'name': form.cleaned_data['name']})
else:
form = ContactForm()
return render(request, 'contact.html', {'form': form})
সারাংশ
Django তে ফর্ম সাবমিশন এবং ডেটা প্রক্রিয়াকরণ একটি গুরুত্বপূর্ণ অংশ, যা ইউজার ইনপুটকে ভ্যালিডেট, প্রক্রিয়াকরণ এবং সংরক্ষণ করতে সাহায্য করে। Django এর ফর্ম সিস্টেম স্বয়ংক্রিয়ভাবে ভ্যালিডেশন এবং সুরক্ষা প্রদান করে, যার মাধ্যমে আপনি দ্রুত ও নিরাপদভাবে ফর্ম ডেটা গ্রহণ করতে পারেন।
Read more